/**
 */
package fUML.Syntax.Actions.BasicActions;

import fUML.Syntax.CommonBehaviors.BasicBehaviors.Behavior;

import java.util.Map;

import org.eclipse.emf.common.util.DiagnosticChain;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Call Behavior Action</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link fUML.Syntax.Actions.BasicActions.CallBehaviorAction#getBehavior <em>Behavior</em>}</li>
 * </ul>
 * </p>
 *
 * @see fUML.Syntax.Actions.BasicActions.BasicActionsPackage#getCallBehaviorAction()
 * @model
 * @generated
 */
public interface CallBehaviorAction extends CallAction {
	/**
	 * Returns the value of the '<em><b>Behavior</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * The invoked behavior. It must be capable of accepting and returning
	 *                 control.
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Behavior</em>' reference.
	 * @see #setBehavior(Behavior)
	 * @see fUML.Syntax.Actions.BasicActions.BasicActionsPackage#getCallBehaviorAction_Behavior()
	 * @model required="true" ordered="false"
	 * @generated
	 */
	Behavior getBehavior();

	/**
	 * Sets the value of the '{@link fUML.Syntax.Actions.BasicActions.CallBehaviorAction#getBehavior <em>Behavior</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Behavior</em>' reference.
	 * @see #getBehavior()
	 * @generated
	 */
	void setBehavior(Behavior value);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * <HTML><HEAD>
	 *  <META content="MSHTML
	 *                   6.00.6000.16705" name=GENERATOR></HEAD>
	 *                   <BODY>isSynchronous must be
	 *                   true</BODY></HTML>
	 * self.isSynchronous
	 * @param diagnostics The chain of diagnostics to which problems are to be appended.
	 * @param context The cache of context-specific information.
	 * <!-- end-model-doc -->
	 * @model
	 * @generated
	 */
	boolean is_synchronous(DiagnosticChain diagnostics, Map<Object, Object> context);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * <HTML><HEAD>
	 *  <META content="MSHTML
	 *                   6.00.6000.16705" name=GENERATOR></HEAD>
	 *                   <BODY>The behavior may not be active.
	 *                   </BODY></HTML>
	 * not self.behavior.isActive
	 * @param diagnostics The chain of diagnostics to which problems are to be appended.
	 * @param context The cache of context-specific information.
	 * <!-- end-model-doc -->
	 * @model
	 * @generated
	 */
	boolean inactive_behavior(DiagnosticChain diagnostics, Map<Object, Object> context);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * <HTML><HEAD>
	 *  <META content="MSHTML
	 *                   6.00.6000.16705" name=GENERATOR></HEAD>
	 *                   <BODY>If the behavior has a context, it must be the same as the
	 *                   context of the enclosing activity or a (direct or indirect) superclass of
	 *                   it.</BODY></HTML>
	 * self.behavior.context->notEmpty() implies
	 *                   union(self.context.allParents())->includes(self.behavior.context)
	 *                 
	 * @param diagnostics The chain of diagnostics to which problems are to be appended.
	 * @param context The cache of context-specific information.
	 * <!-- end-model-doc -->
	 * @model
	 * @generated
	 */
	boolean proper_context(DiagnosticChain diagnostics, Map<Object, Object> context);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model behaviorRequired="true" behaviorOrdered="false"
	 * @generated
	 */
	void fUML_setBehavior(Behavior behavior);

} // CallBehaviorAction
